package br.com.scv.util;

public class Cpf {
	
	private static final int[] pesoCpf = {11, 10, 9, 8, 7, 6, 5, 4, 3, 2};
	private static final int[] pesoCnpj = {6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2};
	
	private static int calcularDigito(String str, int[] peso){
		int soma = 0;
		for(int indice = str.length()-1, digito; indice >=0; indice--){
			digito = Integer.parseInt(str.substring(indice, indice+1));
			soma += digito*peso[peso.length-str.length()+indice];
		}
		soma = 11 - soma % 11;
		return soma > 9 ? 0: soma;
	}
	
	public static boolean isValidCpf(String cpf){
		cpf = cpf.replace(".", "");
		cpf = cpf.replace("-", "");
		System.out.println(cpf);
		if((cpf==null) || (cpf.length()!=11)) return false;
		
		Integer digito1 = calcularDigito(cpf.substring(0, 9), pesoCpf);
		Integer digito2 = calcularDigito(cpf.substring(0, 9) + digito1, pesoCpf);
		return cpf.equals(cpf.substring(0, 9) + digito1.toString() + digito2.toString());
	}
	
	public static boolean isValidCnpj(String cnpj){
if((cnpj==null) || (cnpj.length()!=14)) return false;
		
		Integer digito1 = calcularDigito(cnpj.substring(0, 12), pesoCnpj);
		Integer digito2 = calcularDigito(cnpj.substring(0, 12) + digito1, pesoCnpj);
		return cnpj.equals(cnpj.substring(0, 9) + digito1.toString() + digito2.toString());
	}
}
 